package com.hyt.it.ogt.ykcj.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.hyt.it.ogt.ykcj.common.annotation.Excel;
import com.hyt.it.ogt.ykcj.domain.exam.ExamSubjectInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Data
public class ExamInfoVo implements Serializable {

    /**
     * 序号id
     */
    @ApiModelProperty(value = "序号ID")
    private String id;

    /**
     * 考试名称Id
     */
    @ApiModelProperty(value = "考试名称ID")
    @NotBlank(message = "请选择考试")
    @Excel(name = "考试名称Id")
    private String examNameConfigId;

    /**
     * 考试名称
     */
    @ApiModelProperty(value = "考试名称")
    @Excel(name = "考试名称")
    private String examNameConfigName;

    /**
     * 考试名称编号
     */
    @ApiModelProperty(value = "考试名称编号")
    @Excel(name = "考试名称编号")
    private String examNameCode;

    /**
     * 考试类型(99:其他)
     */
    @ApiModelProperty(value = "考试类型(99:其他)")
    @Excel(name = "考试类型(99:其他)")
    private String examType;

    /**
     * 考试形式(0:考试 1：考试组)
     */
    @ApiModelProperty(value = "考试形式")
    @Excel(name = "考试形式")
    private Integer examForm;

    /**
     * 合并类型：0：合并考试 1：合并科目
     */
    @ApiModelProperty(value = "合并类型：0：合并考试 1：合并科目")
    @Excel(name = "合并类型")
    private Integer mergeType;

    /**
     * 考试频次
     */
    @ApiModelProperty(value = "考试频次")
    @Excel(name = "考试频次")
    private String examNumberTimes;

    /**
     * 考试频次描述
     */
    @ApiModelProperty(value = "考试频次描述")
    @Excel(name = "考试频次描述")
    private String dictLabel;

    /**
     * 考试年份
     */
    @ApiModelProperty(value = "考试年份")
    @NotBlank(message = "请选择年份")
    @Excel(name = "考试年份")
    private String year;

    /**
     * 公务员考试类别Id(当考试类型为公务员时，该属性必填)
     */
    @ApiModelProperty(value = "公务员考试类别Id(当考试类型为公务员时，该属性必填)")
    @Excel(name = "公务员考试类别Id(当考试类型为公务员时，该属性必填)")
    private String civilServantType;

    /**
     * 部门id
     */
    @ApiModelProperty(value = "机构ID")
    @Excel(name = "机构ID")
    private String officeId;

    /**
     * 部门id
     */
    @ApiModelProperty(value = "部门ID")
    @Excel(name = "部门id")
    private String deptId;

    /**
     * 科目信息集合
     */
    @ApiModelProperty(value = "科目信息集合")
    @Excel(name = "科目信息集合")
    private List<ExamSubjectInfo> subjectInfo;

    /**
     * 科目信息集合
     */
    @ApiModelProperty(value = "科目信息集合(公务员)")
    @Excel(name = "科目信息集合")
    private List<ExamSubjectVo> subjectVos;

    /**
     * 考试开始日期
     */
    @ApiModelProperty(value = "考试开始日期")
    @JsonFormat(pattern = "yyyy年MM月dd日", timezone = "GMT+8")
    @Excel(name = "考试开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date examStartDay;

    /**
     * 考试结束日期
     */
    @ApiModelProperty(value = "考试结束日期")
    @JsonFormat(pattern = "yyyy年MM月dd日", timezone = "GMT+8")
    @Excel(name = "考试结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date examEndDay;

    /**
     * 考试开始时间
     */
    @ApiModelProperty(value = "考试开始时间")
    @Excel(name = "开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private String examDayStartTime;

    /**
     * 考试结束时间
     */
    @ApiModelProperty(value = "考试结束时间")
    @Excel(name = "结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private String examDayEndTime;

    /**
     * 类型：0考试 1科目   (名称的id)
     */
    @ApiModelProperty(value = "类型(0:考试 1:科目)")
    private String typeFlag;

    /**
     * 修改时间
     */
    @ApiModelProperty(value = "修改时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;

    /**
     * 招考职位个数
     */
    @ApiModelProperty(value = "招考职位个数")
    private String postNumber;

    /**
     * 复合科目名称
     */
    @ApiModelProperty(value = "复合科目名称(公务员)")
    private List<String> compositeSubject = new ArrayList<>();

    /**
     * 复合分数线
     */
    @ApiModelProperty(value = "复合分数线(公务员)")
    private BigDecimal compositeEligibilityCriteria;

    /**
     * 状态(0:临时 1:正式)
     */
    @ApiModelProperty(value = "状态(0:临时 1:正式)")
    @Excel(name = "状态(0:临时 1:正式)")
    private String status;

    /**
     * 数据来源：（0：后台操作；1：同步 ）
     */
    @ApiModelProperty(value = "数据来源：（0：后台操作；1：同步 ）")
    @Excel(name = "数据来源：（0：后台操作；1：同步 ）")
    private String origin;

    /**
     * 任务id
     */
    @ApiModelProperty(value = "任务id")
    private String taskId;

    /**
     * 考试用时
     */
    @ApiModelProperty(value = "考试用时")
    private Long useTime;

    /**
     * 考试组下的子考试
     */
    @ApiModelProperty(value = "关联子考试（为考试组时）")
    private List<ExamInfoVo> children;

    /**
     * 考试code
     */
    @ApiModelProperty(value = "考试code")
    private String examCode;

    /**
     * 考试code
     */
    @ApiModelProperty(value = "考试code")
    private BigDecimal paperFullMarks;

    /**
     * 参考人数
     */
    @ApiModelProperty(value = "参考人数")
    private Integer signNumber;

    /**
     * 考试介绍
     */
    @ApiModelProperty(value = "考试介绍")
    private String remarks;

}
